第一步:工具的介绍
工欲善其事必先利其器,所以首先先总结一下这个项目中的使用到的工具,主要是对自己不熟悉也是第一次接触的一些东西的总结,这些工具大概分成3类:项目管理工具、项目打包工具、项目运行依赖
项目管理工具
SourceTree:一个免费的Git图形化管理工具
项目打包工具
Webpack :模块打包机
项目运行依赖
Nodejs:服务器端的、非阻断式I/O的、事件驱动
开发规范
- 1 自定义的属性命名前缀:$
- 2 所有的路劲配置(测试,模拟)等地址,另起文件集中管理,在入口文件mian.js引入
问题与总结
1:变量命名
- 1.1 关于input输入框绑定的变量(this)命名,与loadData中的Get方法中的参数(reqParam)一致;此外input的事件绑定函数的参数(this)也与之一致。以输入框为条件查询时,如果输入框输入值,则get方法的参数增加对于绑定的值
- 1.2 input中v-model绑定的值不能直接使用后端给定的字段,会导致input组件的@change事件无法响应。
- 1.3 v-model的变量可以通过点的方式获取,而prop的变量获取则不可。
2:elementUI组件
- 2.1.0 table表格:在el-table-column中, scope可以获取当前行或列的所有数据信息
- 2.1.1 table表格:在el-table组件绑定的data类型必须是数组,且el-table-column中的prop必须是data[x]对象的属性名对应,data需要绑定的服务器返回数据response.data的数据结构过于复杂,可不必转化
lr
<el-table :data="configPrice.data" border>
<el-table-column type="index" v-if="false"></el-table-column>
<el-table-column label="修改日期" prop="createTime" align="center" width="150"></el-table-column>
<el-table-column label="企业工商信息比对" prop="content.orgPay.query" align="center" width="150"></el-table-column>
</el-table>
- 2.2 所有需要验证的数据,用form进行包裹(el-form组价中的v-model绑定的变量都在aForm中定义)。el-form组件的model, ref, rules关系:(:model="aForm"; ref="aForm"; :rules="aRules")。Form-Item 组件里的元素绑定的数据:model="aForm.xxx'的形式.data返回的 return 中,aRules:{ xxx:[{}, {}], xxxx:[{}, {}]}。
-
2.3 关于多选框的验证[el-select],当设置了prop属性时,且有validator的验证,则触发的条件需要加上change,无需设置@change事件
productPriceType: [ { validator: checkType, trigger: 'blur,change' } ]
3:服务器返回的数据处理
项目中对后端服务器返回的数据有许多地方需要处理。服务器返回的数据基本是json格式的
- 1.1 当返回的json数据为字符串类型
例如:JSONstring 返回一下数据
{
"orgPay":{"query":"20.00","pay":"2.50"},
"orgPayZhiMa":{"check":"2.50"},
"bankauth":{"mobilecode":"0.05","bankauth":"0.95","bankauth3":"0.90"},
"facereco":{"ocr":"0.10","liveExamVSIDPhoto":"0.20","policeVSLiveExam":"1.70"},
"psnZhiMa":{"check":"2.00"},
"psnCheck":{"idInfoCheck":"0.85"},
"bizConfirm":{"bizCheck":"2.50"},
"telecomauth":{"telecomauth":"1.00"}}
前端需要把JSON类型的数据转换为js对象读取所有价格,这时,有两种解决方案
(一):eval函数
var jsObj = eval( "(" + JSONstring + ")" )
方案说明:
加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行将json数据转换为json对象。
但是使用eval函数解析JSON是一种很不安全的方式,能不用最好就不用,原因是eval不但可以解析JSON字符串,还会执行其中的代码块(如果有的话)
(二):JSON.parse()
方案说明:
JSON.parse()可以把将JSON格式的字符串数据转换为 JavaScript 对象
4:返回服务器的数据
-1 可以参考请求回来的数据格式,
例如:put方法中对"content"字段的数据必须是***json格式的字符串***
let json = {"orgPay":{"query": priceForm.orgPay_query, "pay": priceForm.orgPay_pay },
"orgPayZhiMa": {"check": priceForm.orgPayZhiMa_check },
"bankauth": {"mobilecode": priceForm.bankauth_mobilecode, "bankauth": priceForm.bankauth_bankauth , "bankauth3": priceForm.bankauth_bankauth3 },
"facereco": {"ocr": priceForm.facereco_ocr, "liveExamVSIDPhoto": priceForm.facereco_liveExamVSIDPhoto, "policeVSLiveExam": priceForm.facereco_policeVSLiveExam },
"psnZhiMa": {"check": priceForm.psnZhiMa_check },
"psnCheck": {"idInfoCheck": priceForm.psnCheck_idInfoCheck },
"bizConfirm": {"bizCheck": priceForm.bizConfirm_bizCheck },
"telecomauth": {"telecomauth": priceForm.telecomauth_telecomauth }
};
let content = JSON.stringify(json); ***JavaScript 对象转换为字符串。***
5:精度的控制
后端数据对精度的要求均在前端控制,即在验证时控制
- 1:parseFloat(xx) 可解析一个字符串xx,并返回一个浮点数;第一个x必须是number
- 2: xx.toFixed(2) 把数字转换为字符串,结果的小数点后有指定位数的数字
项目现有版本存在的一些疑惑
1.1 用户管理板块
分页样式:无法在首次刷新时显示所有页数。原因:后端数据返回存在误差
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。